import request from '@/utils/request'

// 区块管理API
export const blockApi = {
  // 获取区块列表
  getList(params: any) {
    return request({
      url: '/admin/block/page',
      method: 'get',
      params
    })
  },

  // 获取区块详情
  getInfo(id: string | number) {
    return request({
      url: `/admin/block/${id}`,
      method: 'get'
    })
  },

  // 创建区块
  create(data: any) {
    return request({
      url: '/admin/block',
      method: 'post',
      data
    })
  },

  // 更新区块
  update(data: any) {
    return request({
      url: '/admin/block',
      method: 'put',
      data
    })
  },

  // 删除区块
  delete(id: string | number) {
    return request({
      url: `/admin/block/${id}`,
      method: 'delete'
    })
  },

  // 更新区块状态
  updateStatus(id: string | number, status: number) {
    return request({
      url: `/admin/block/${id}/status`,
      method: 'put',
      data: { status }
    })
  },

  // 获取站点列表
  getSiteList() {
    return request({
      url: '/admin/block/sites',
      method: 'get'
    })
  },

  // 获取模板文件列表
  getTemplateList(params?: any) {
    return request({
      url: '/admin/block/templates',
      method: 'get',
      params
    })
  },

  // 获取区块渲染数据
  getBlockRenderData(blockId: string | number) {
    return request({
      url: `/admin/block/${blockId}/render`,
      method: 'get'
    })
  },

  // 区块内容相关API
  // 获取区块内容列表
  getContentList(blockId: string | number, params: any) {
    return request({
      url: `/admin/block/${blockId}/content/page`,
      method: 'get',
      params
    })
  },

  // 获取区块内容详情
  getContentInfo(blockId: string | number, contentId: string | number) {
    return request({
      url: `/admin/block/${blockId}/content/${contentId}`,
      method: 'get'
    })
  },

  // 创建区块内容
  createContent(blockId: string | number, data: any) {
    return request({
      url: `/admin/block/${blockId}/content`,
      method: 'post',
      data
    })
  },

  // 更新区块内容
  updateContent(blockId: string | number, data: any) {
    return request({
      url: `/admin/block/${blockId}/content`,
      method: 'put',
      data
    })
  },

  // 删除区块内容
  deleteContent(blockId: string | number, contentId: string | number) {
    return request({
      url: `/admin/block/${blockId}/content/${contentId}`,
      method: 'delete'
    })
  },

  // 更新区块内容状态
  updateContentStatus(blockId: string | number, contentId: string | number, status: number) {
    return request({
      url: `/admin/block/${blockId}/content/${contentId}/status`,
      method: 'put',
      data: { status }
    })
  },

  // ==================== 区块配置管理API ====================
  // 注意：区块配置管理实际上就是区块本身的管理，只是用途不同
  // 配置管理：管理区块结构定义
  // 内容管理：管理区块具体内容

  // 获取区块配置列表（用于配置管理页面）
  getConfigList(params: any) {
    return request({
      url: '/admin/block/config/page',
      method: 'get',
      params
    })
  },

  // 创建区块配置
  createConfig(data: any) {
    return request({
      url: '/admin/block/config',
      method: 'post',
      data
    })
  },

  // 更新区块配置
  updateConfig(data: any) {
    return request({
      url: '/admin/block/config',
      method: 'put',
      data
    })
  },

  // 删除区块配置
  deleteConfig(id: number) {
    return request({
      url: `/admin/block/config/${id}`,
      method: 'delete'
    })
  },

  // 更新区块配置状态
  updateConfigStatus(id: number, status: number) {
    return request({
      url: `/admin/block/config/${id}/status`,
      method: 'put',
      data: { status }
    })
  },

  // ==================== 字段配置管理 ====================

  // 获取区块字段配置列表
  getFields(blockId: string | number) {
    return request({
      url: `/admin/block/${blockId}/fields`,
      method: 'get'
    })
  },

  // 获取区块表单Schema
  getFormSchema(blockId: string | number) {
    return request({
      url: `/admin/block/${blockId}/form-schema`,
      method: 'get'
    })
  },

  // 保存区块字段配置
  saveFields(blockId: string | number, fields: any[]) {
    return request({
      url: `/admin/block/${blockId}/fields`,
      method: 'post',
      data: fields
    })
  },

  // 获取字段类型列表
  getFieldTypes() {
    return request({
      url: '/admin/block/field-types',
      method: 'get'
    })
  },

  // 获取默认字段配置
  getDefaultFields(blockType: string) {
    return request({
      url: `/admin/block/default-fields/${blockType}`,
      method: 'get'
    })
  },

  // 验证表单数据
  validateFormData(blockId: string | number, formData: any) {
    return request({
      url: `/admin/block/${blockId}/validate`,
      method: 'post',
      data: formData
    })
  },

  // 复制字段配置
  copyFields(sourceBlockId: string | number, targetBlockId: string | number) {
    return request({
      url: `/admin/block/${sourceBlockId}/copy-fields/${targetBlockId}`,
      method: 'post'
    })
  }
}

export default blockApi
